#include "VarTable.h"
#include <iostream>
#include <vector>

using namespace std;

typedef int INTEGER;
typedef int INDEX;
typedef string STRING;
typedef bool BOOLEAN;

	VarTable::VarTable(){
		_size = 0;
	}
	INDEX VarTable::inSertVar(STRING varName){
		int i;
		int oldIndex = 0;
		BOOLEAN isInTable = false;
		for(i=0;i<_size;i++){
			if(strcmp(_table.at(i).getVarName().c_str(),  varName.c_str())==0){
				oldIndex = i;
				isInTable = true;
				break;
			}
		}
		if(isInTable == false){
			
			int newIndex = _size;
			_size +=1;
			TableNode tableRecord = TableNode(newIndex, varName, "");
			_table.push_back(tableRecord);
			return newIndex;
		}else{
			return oldIndex;
		}
	}
	INTEGER VarTable::getSize(){
		return _size;
	}
	STRING VarTable::getVarName(INDEX index){
		for(int i=0;i<_size;i++){
			if(_table.at(i).getIndex() == index){
				return _table.at(i).getVarName();
			}
		}
		return NULL;
	}
	INDEX VarTable::getVarIndex(STRING name){
		for(int i=0;i<_size;i++){
			if(strcmp(_table.at(i).getVarName().c_str(), name.c_str())==0){
				return _table.at(i).getIndex();
			}
		}
		return -1;
	}
	BOOLEAN VarTable::hasVar(STRING varName){
		for(int i=0;i<_size;i++){
			if(strcmp(_table.at(i).getVarName().c_str(),  varName.c_str())==0){
				return true;
			}
		}
		return false;
	}